package br.edu.unilasalle.simon_api.domain;

// Generated 08/03/2014 18:19:52 by Hibernate Tools 4.0.0

import static javax.persistence.GenerationType.IDENTITY;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;

/**
 * Produto generated by hbm2java
 */
@Entity
@Table(name = "produto", catalog = "simon")
@JsonIgnoreProperties(value = { "handler", "hibernateLazyInitializer", "itemVendas" })
public class Produto extends BaseEntityAtivo<Long> {

	private static final long serialVersionUID = -3607821977671213124L;
	
	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id", unique = true, nullable = false)
	private Long id;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_fornecedor", nullable = false)
	private Fornecedor fornecedor;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_loja", nullable = false)
	private Loja loja;
	
	@Column(name = "referencia", nullable = false, length = 50)
	private String referencia;
	
	@Column(name = "descricao", nullable = false, length = 100)
	private String descricao;
	
	@Column(name = "observacao", length = 100)
	private String observacao;
	
	@Column(name = "unidade", length = 100)
	private String unidade;
	
	@Column(name = "preco1", nullable = false, precision = 12, scale = 2)
	private Double preco1;
	
	@Column(name = "preco2", nullable = false, precision = 12, scale = 2)
	private Double preco2;
	
	@Column(name = "quantidade", nullable = false)
	private Integer quantidade;
	
	@Column(name = "local_estoque", length = 100)
	private String localEstoque;
	
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "produto")
	private Set<ItemVenda> itemVendas = new HashSet<ItemVenda>(0);

	public Produto() {
	}
	
	public Produto(Long id, String referencia, String descricao, Double preco2, Integer quantidade, Character ativo) {
		this.id = id;
		this.referencia = referencia;
		this.descricao = descricao;
		this.preco2 = preco2;
		this.quantidade = quantidade;
		this.ativo = ativo;
	}

	public Produto(Fornecedor fornecedor, Loja loja, String referencia,
			String descricao, String observacao, String unidade, Double preco1,
			Double preco2, Integer quantidade, String localEstoque, Character ativo) {
		this.fornecedor = fornecedor;
		this.loja = loja;
		this.referencia = referencia;
		this.descricao = descricao;
		this.observacao = observacao;
		this.unidade = unidade;
		this.preco1 = preco1;
		this.preco2 = preco2;
		this.quantidade = quantidade;
		this.localEstoque = localEstoque;
		this.ativo = ativo;
	}

	public Produto(Fornecedor fornecedor, Loja loja, String referencia,
			String descricao, String observacao, String unidade, Double preco1,
			Double preco2, Integer quantidade, String localEstoque,
			Character ativo, Set<ItemVenda> itemVendas) {
		this.fornecedor = fornecedor;
		this.loja = loja;
		this.referencia = referencia;
		this.descricao = descricao;
		this.observacao = observacao;
		this.unidade = unidade;
		this.preco1 = preco1;
		this.preco2 = preco2;
		this.quantidade = quantidade;
		this.localEstoque = localEstoque;
		this.ativo = ativo;
		this.itemVendas = itemVendas;
	}

	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Fornecedor getFornecedor() {
		return this.fornecedor;
	}

	public void setFornecedor(Fornecedor fornecedor) {
		this.fornecedor = fornecedor;
	}

	public Loja getLoja() {
		return this.loja;
	}

	public void setLoja(Loja loja) {
		this.loja = loja;
	}

	public String getReferencia() {
		return this.referencia;
	}

	public void setReferencia(String referencia) {
		this.referencia = referencia;
	}

	public String getDescricao() {
		return this.descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getObservacao() {
		return this.observacao;
	}

	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}
	
	public String getUnidade() {
		return this.unidade;
	}

	public void setUnidade(String unidade) {
		this.unidade = unidade;
	}

	public Double getPreco1() {
		return this.preco1;
	}

	public void setPreco1(Double preco1) {
		this.preco1 = preco1;
	}

	public Double getPreco2() {
		return this.preco2;
	}

	public void setPreco2(Double preco2) {
		this.preco2 = preco2;
	}

	public Integer getQuantidade() {
		return this.quantidade;
	}

	public void setQuantidade(Integer quantidade) {
		this.quantidade = quantidade;
	}

	public String getLocalEstoque() {
		return this.localEstoque;
	}

	public void setLocalEstoque(String localEstoque) {
		this.localEstoque = localEstoque;
	}

	public Set<ItemVenda> getItemVendas() {
		return this.itemVendas;
	}

	public void setItemVendas(Set<ItemVenda> itemVendas) {
		this.itemVendas = itemVendas;
	}

}
